Restoration of software configurations

ABSTRACT

Software configurations of devices are automatically restored. One or more software components obtained for a device are automatically tracked. Those one or more software components tracked for the device are then automatically provided to the device to restore the software configuration of the device, in response to an indication that restoration is desired.

TECHNICAL FIELD

[0001] This invention relates, in general, to managing softwareconfigurations of devices, and in particular, to automatically restoringthe software configuration of a device, in response to an eventprecipitating restoration.

BACKGROUND ART

[0002] Devices, such as console game systems, are increasing incomplexity. Users are able to customize the devices, by adding to,deleting from, and/or modifying applications of the devices. The devicesare becoming more programmable and are taking over more functions, whichwere previously performed by general purpose computers.

[0003] As the devices become more complex, however, they also becomemore susceptible to failure. When a failure of a device occurs, such asa software crash, the customization of the device may be wiped out. Toobtain full function of the device again, the user has to painstakinglyrecreate the software configuration of the device. That is, the userneeds to determine and re-install all the applications and patches thatwere previously on the device. This is burdensome and even overwhelmingfor some users, especially since these devices are typically targeted attechnologically unsophisticated users.

[0004] Based on the foregoing, a need exists for a capability thatfacilitates restoration of software configurations of devices. As oneexample, a need exists for a capability that automatically restoressoftware configurations of devices.

DISCLOSURE OF INVENTION

[0005] The shortcomings of the prior art are overcome and additionaladvantages are provided through the provision of a method of restoringsoftware configurations of devices. The method includes, for instance,automatically tracking an obtaining of one or more software componentsof a device; and automatically restoring a software configuration of thedevice, the automatically restoring including automatically providing tothe device the one or more software components that are tracked for thatdevice.

[0006] In a further embodiment, a method of facilitating restoration ofsoftware configurations of devices is provided. The method includes, forinstance, automatically tracking in a repository information relating toa software configuration of a device, the automatically tracking beingresponsive to changes to the software configuration; determining thatthe software configuration of the device is to be restored; andresponsive to the determining, automatically providing to the device,based on information of the repository, one or more software componentsusable in restoring the software configuration.

[0007] System and computer program products corresponding to theabove-summarized methods are also described and claimed herein.

[0008] Additional features and advantages are realized through thetechniques of the present invention. Other embodiments and aspects ofthe invention are described in detail herein and are considered a partof the claimed invention.

BRIEF DESCRIPTION OF DRAWINGS

[0009] The subject matter which is regarded as the invention isparticularly pointed out and distinctly claimed in the claims at theconclusion of the specification. The foregoing and other objects,features, and advantages of the invention are apparent from thefollowing detailed description taken in conjunction with theaccompanying drawings in which:

[0010]FIG. 1 depicts one embodiment of a distributed environment toincorporate and use one or more aspects of the present invention;

[0011]FIG. 2 depicts one embodiment of the logic associated withrecording information relating to the initial installation of a device,in accordance with an aspect of the present invention;

[0012]FIG. 3 depicts one embodiment of the logic associated withrecording information relating to the installation of an application onthe device, in accordance with an aspect of the present invention;

[0013]FIG. 4 depicts one embodiment of the logic associated withrecording information relating to the installation of a software patchon the device, in accordance with an aspect of the present invention;

[0014]FIG. 5 depicts one embodiment of the logic associated withsynchronizing the software configuration of the device with the recordedinformation of that device, in accordance with an aspect of the presentinvention;

[0015]FIG. 6a depicts one embodiment of the logic associated withautomatically recovering a software configuration of a device, inaccordance with an aspect of the present invention; and

[0016]FIG. 6b depicts one embodiment of various actions taken by arecovery unit in the automatic recovery capability of FIG. 6a, inaccordance with an aspect of the present invention.

BEST MODE FOR CARRYING OUT THE INVENTION

[0017] Overview

[0018] Generally, in one aspect of the present invention, an automaticrecovery capability is provided for devices, such as console gamesystems. When a device has a catastrophic software crash, all of thework a user has performed to customize that device can be wiped out.Thus, an automatic recovery capability is provided to recover theofficially supported or registered software components (e.g.,applications, patches and/or updates) of a device to be restored.Unofficial or unregistered, and perhaps faulty, software components,which may have been the cause of the original fault, are not recovered.

[0019] In one particular example, a repository associated with a deviceis automatically updated, in response to a user obtaining a softwarecomponent for the device, via, for instance, the internet. Then, whenthe user's device suffers a failure and restoration is desired, therepository associated with the device is used to automatically obtainthe registered software components for the device.

DETAILED DESCRIPTION

[0020] One embodiment of a distributed environment to incorporate anduse one or more aspects of the present invention is described withreference to FIG. 1. A distributed environment 100 includes, forinstance, one or more devices 102 coupled to one or more recovery units104 via at least one internet network 106.

[0021] A device 102 is, for instance, a consumer device, such as aconsole game system, or other types of systems. A device includes anunique identifier, which is embedded in the hardware, as one example, soit is difficult for users to change the identification. Additionally,the identifier may contain some internal consistency coding to make itdifficult for users, who do manage to change the identification, tochoose a new valid identification. Further, a device includes, forinstance, a factory installed back-up software configuration, which isinstalled on a reliable storage medium (e.g., NVRAM), and built-inrecovery firmware. The firmware includes at least one program usable inrecovery (e.g., a portion or full operating system implementation,and/or one or more other applications), which is stored in non-volatilestorage (e.g., NVRAM, EEPROM, ROM, etc.). Further, the device includesan internet access application, an internet connection and/or a softwareupdate and recovery application that includes information (e.g., an IPaddress) on how to contact the recovery unit coupled to the device.

[0022] The devices are coupled to the internet via a dial-up modem, DSL,or other mechanisms, as examples. In one instance, communication betweena device and its recovery unit are to take appropriate securityprecautions, so the parties to the communication (e.g., a device andrecovery unit) are authenticated and messages are not intercepted,corrupted or otherwise tampered with by a third party.

[0023] Recovery unit 104 is, for instance, a server, such as a serverbased on the pSeries, xSeries or iSeries architecture, offered byInternational Business Machines Corporation, Armonk, N.Y. It ismaintained by or on behalf of the manufacture of the one or more devicescoupled to the recovery unit. The recovery unit includes, for example, arepository of one or more recovery databases 108, and one or moresoftware update databases 110. Each recovery database includesinformation used to recover devices, as described in further detailherein, and each software update database includes information regardingavailable software for the devices. For example, the software updatedatabase indicates which software is for a particular hardwareconfiguration, and/or which patch is associated with a particularversion of a software application, etc.

[0024] The recovery unit is used to automatically restore the softwareconfiguration of a device. To facilitate this recovery, the recoveryunit automatically tracks software components obtained for the variousdevices registered with the recovery unit. Examples of the type ofinformation tracked during various stages of normal operation of adevice are described with reference to FIGS. 2-4. For example,information tracked during initial installation of a device is describedwith reference to FIG. 2; information tracked during the obtaining of anapplication is described with reference to FIG. 3; and the informationtracked during the obtaining of a software patch is described withreference to FIG. 4.

[0025] Referring to FIG. 2, when a device is initially installed, itregisters itself with recovery unit 104, STEP 200. This includes, forinstance, providing the recovery unit with its unique id and its initialhardware and software configurations. The recovery unit then uses thisinformation to create a record for the device in recovery database 108,STEP 202. The record includes, for instance, the identification of thedevice, its initial hardware configuration, and its initial softwareconfiguration (e.g., operating system and zero or more applications).

[0026] Subsequent to installation, one or more additional applicationsmay be obtained (e.g., requested, provided, purchased, leased, licensed,downloaded, installed, etc.) for the device. Information recorded withthis type of activity is described with reference to FIG. 3.

[0027] Initially, a determination is made as to whether the onlineobtaining of applications is supported, INQUIRY 300. If it is notsupported, then processing is complete. However, if it is supported,then the device contacts the recovery unit, since, in one example, it isthe recovery unit that controls the obtaining of requested applications,STEP 302. The procedure to obtain a requested application begins, STEP304.

[0028] In one example, the recovery unit looks at which application isbeing requested, and checks the software and hardware configurationinformation for the device to provide the correct version of theapplication for that software/hardware configuration, STEP 306. Forinstance, the recovery unit checks the record in the recovery databasefor that device to determine the hardware/software configuration of thedevice. Then, it checks the software update database to determine theappropriate version of the requested application for that configuration.This version of the application is then provided (e.g., downloaded viathe internet) to the device.

[0029] In response to receiving the application, the device installs theapplication in a standard manner, STEP 308. (In a further example, therecovery unit installs the application.) Additionally, the recovery unitrecords information relating to this action in the recovery database,STEP 310. As one example, it records an indication of the requestedapplication, including an indication of which version of thatapplication was provided.

[0030] In addition to obtaining applications, it is also possible toobtain a software patch or other type of update. Typically, patches areused to correct any errors or to enhance a particular feature. Oneembodiment of the logic associated with recording information for asoftware patch is described with reference to FIG. 4.

[0031] Initially, the device contacts the recovery unit for one or moresoftware patches, STEP 400. It may be that a specific patch is requestedor a request is made for any appropriate patches for thehardware/software configuration of the device. The recovery unit uses asoftware patch procedure to determine which software patches the deviceis to receive, STEP 402. For example, the recovery unit checks therecovery database to determine the hardware/software configuration ofthe device, and then checks the software update database to determinewhether there are any patches for that configuration or whether therequested patch is appropriate.

[0032] In response to the checking, zero or more software patches aredownloaded by the recovery unit to the device, and installed by eitherthe recovery unit or the device, STEP 404. Additionally, the recoveryunit records in the recovery database the software patches that wereprovided to the device, STEP 406.

[0033] Based on the foregoing, during normal operation, information isautomatically tracked and saved in the recovery database, which is usedin case recovery of a software configuration of a device is needed. Theabove processes update the recovery database's configuration informationfor a device, as individual updates are made. In general, with this typeof process, it is possible to have some drift, where the recordedconfiguration may drift away from the actual configuration. There areseveral failures which can cause this to happen, including, forinstance, errors that occur during the download that might cause therecovery unit and device to have different views on whether a downloadsucceeded; or a failure on the recovery unit may cause an old recoverydatabase to be loaded resulting in some device updates being lost; etc.

[0034] Regardless of the cause, it may be desirous to periodicallyverify that the actual configuration is in fact recorded in the recoverydatabase. This configuration synchronization may be done as a part ofthe above update procedures, in which each time an update is performed,the entire configuration is checked, or it may be performed as anindependent operation. One embodiment of the logic associated with thisoptional periodic configuration synchronization is described withreference to FIG. 5.

[0035] The device contacts the recovery unit and sends its softwareconfiguration information to the recovery unit, STEP 500. This includes,for example, information regarding the operating system, applications,patches and/or other updates. The recovery unit compares the receivedinformation against the recorded configuration information for thatdevice to determine whether there are any discrepancies, STEP 502. Ifthere are discrepancies, INQUIRY 504, then those discrepancies are notedand reported back to the device, STEP 506. Any noted and reporteddiscrepancies can be addressed by either the recovery unit'sadministrator or the user of the device. However, if there are nodiscrepancies, processing is complete.

[0036] The tracking of the software components (e.g., applications,patches, updates) for a particular device enables that device to berestored, if desired. In one example, a device is restored, in responseto detecting a catastrophic software failure. The definition of what isa catastrophic software failure is implementation dependent. Forexample, a catastrophic software failure may be indicated, when thedevice fails to boot a predefined number of times (e.g., four times in arow) or within a timeout range. As a further example, a catastrophicsoftware failure may be indicated when a user's favorite applicationwill not start.

[0037] Regardless of the definition of a catastrophic software failure,recovery is initiated in response thereto. The initiation of recoverymay be manual or automatic. For example, a user may manually start theprocess or the device may automatically go into recovery, when recoveryis indicated. Notwithstanding how the process is started, the recoveryitself is automatic, in accordance with an aspect of the presentinvention.

[0038] One embodiment of the logic associated with the automaticrecovery process is described with reference to FIGS. 6a-6 b. When theautomatic recovery process is initiated, the device loads and boots thefactory installed recovery firmware, STEP 600. The recovery firmwarerestores the device's software configuration to its original factorysoftware configuration, STEP 602. For example, the recovery firmwarereads the original software configuration from a storage device (e.g.,NVRAM) embedded in the device or asks the user for a factory suppliedrecovery media (e.g., CD-ROM) from which it can read the originalfactory installed software configuration. The restored factory softwareconfiguration is then rebooted, STEP 604.

[0039] The device connects to the internet and contacts the recoveryunit, STEP 606. The device then requests software configuration recoveryfrom the recovery unit, STEP 608. Using the device's softwareconfiguration, as identified by the device's unique id recorded in therecovery database, the recovery unit performs various actions to recoverthe device, STEP 610. These actions include, for instance, determiningwhich software components are to be provided to the device to restorethe device to its registered state (i.e., its state prior to failurethat includes the registered software components of the device), STEP612 (FIG. 6b). It should be noted that in some extreme cases, a patchmay involve downloading a new operating system image; however, thisshould be avoided.

[0040] Subsequently, the software components are downloaded andinstalled, STEP 614. In one example, each component is downloaded andinstalled by the recovery unit, one at a time. As further examples, thedevice may do the install, one at a time, or it may be possible to batchdownload the components and have the device batch install them.

[0041] Thereafter, the restored software configuration is verified, STEP616. In one example, the recovery unit checks that the restored softwareconfiguration matches the configuration recorded in the recoverydatabase. In response to verifying that the software configurationmatches the recovery database, the automatic recovery process iscomplete, and the user is able to start using the device again, STEP 618(FIG. 6a). In one example, if the verification indicates a discrepancy,then the discrepancy is reported to the device.

[0042] Advantages

[0043] Described in detail above is an automatic recovery capabilitythat automatically restores a device to its registered state, inresponse to an indication that recovery is desired. Advantageously, therecovery capability enables a device to be recovered, without requiringusers to painstakingly recreate the device. Further, the capability isusable for devices owned by technologically unsophisticated users. Itallows those users to enjoy their devices without learning how torestore them.

[0044] Alternate Embodiments

[0045] Although preferred embodiments have been depicted and describedin detail herein, it will be apparent to those skilled in the relevantart that various modifications, additions, substitutions and the likecan be made without departing from the spirit of the invention, andthese are, therefore, considered to be within the scope of theinvention, as defined in the following claims.

[0046] For example, one or more recovery units may be maintained by oron behalf of various device providers (e.g., manufacturers). A recoveryunit can be any component that can connect to the internet, maintain adatabase and respond to requests. Further, the mechanism coupling thedevices and the one or more recovery units may be other than theinternet.

[0047] There are various embodiments for the recovery unit. For example,for a particular device provider and a particular device, there may beone recovery unit that services that device, and each time the devicewants to request another software component or be restored, it contactsthat recovery unit. As a further example, there are a distributed set ofrecovery units that are maintained in synchronization, so any one ofthose units may be contacted.

[0048] The information tracked by the recovery unit may includeadditional, less or different information than that described herein.Further, a unit other than the recovery unit may control the obtainingof a software component, as long as the recovery unit is providedinformation regarding the obtaining, such that the appropriateinformation can be tracked.

[0049] As a further example, the recovery process can be implemented inmany different ways. For example, the firmware can load a memoryresident operating system, which then installs the original softwareconfiguration, including a full operating system. Other changes are alsopossible.

[0050] Although an example of a device has been provided herein, manytypes of devices may be used. Those devices are to include, forinstance, recovery firmware, internet access, and/or information toaccess the recovery unit, etc. As examples, a device may be a computersystem or other consumer-type devices.

[0051] Additionally, although examples of architectures and distributedenvironments have been provided, these are only examples. Otherarchitectures and/or distributed environments may be used.

[0052] The flow diagrams depicted herein are just examples. There may bemany variations to these diagrams or the steps (or operations) describedtherein without departing from the spirit of the invention. Forinstance, the steps may be performed in a differing order, or steps maybe added, deleted or modified. All of these variations are considered apart of the claimed invention.

[0053] For example, in FIG. 3, on the “No” path, some action may betaken, such as providing a message that online obtaining of applicationsis not supported. Similarly, in FIG. 5, action may be taken on the “No”path, such as providing a message. As yet a further example, in STEP 500of FIG. 5, other information, such as hardware configurationinformation, can be provided from the device to the recovery unit.

[0054] The present invention can be included in an article ofmanufacture (e.g., one or more computer program products) having, forinstance, computer usable media. The media has embodied therein, forinstance, computer readable program code means for providing andfacilitating the capabilities of the present invention. The article ofmanufacture can be included as a part of a computer system or soldseparately.

[0055] Additionally, at least one program storage device readable by amachine, tangibly embodying at least one program of instructionsexecutable by the machine to perform the capabilities of the presentinvention can be provided.

What is claimed is:
 1. A method of restoring software configurations ofdevices, said method comprising: automatically tracking an obtaining ofone or more software components of a device; and automatically restoringa software configuration of the device, said automatically restoringcomprising automatically providing to the device the one or moresoftware components that are tracked for that device.
 2. The method ofclaim 1, wherein the automatically restoring is responsive to a softwarefailure of the device.
 3. The method of claim 1, wherein the one or moresoftware components comprise at least one of one or more applicationsand one or more software patches.
 4. The method of claim 1, wherein theautomatically restoring further comprises installing the one or moresoftware components on an original configuration of the device torestore the software configuration to a recorded state of the device. 5.The method of claim 4, further comprising using recovery firmware of thedevice to provide the original configuration of the device.
 6. Themethod of claim 4, wherein the automatically restoring further comprisesverifying the software configuration.
 7. The method of claim 1, whereinthe automatically tracking comprises storing information regarding theone or more software components in a repository associated with thedevice, said information being coupled to the device by an identifier ofthe device.
 8. The method of claim 1, wherein at least one softwarecomponent of the one or more software components is providedelectronically.
 9. The method of claim 1, further comprising initiallyproviding to the device at least one software component of the one ormore software components to be tracked, wherein the initially providingcomprises determining a version of the at least one software componentto be provided.
 10. The method of claim 9, wherein the determiningcomprises using data in a repository to determine the version, said datacomprising at least one of information relating to the softwareconfiguration of the device and information relating to a hardwareconfiguration of the device.
 11. The method of claim 1, wherein thedevice comprises a consumer device.
 12. The method of claim 11, whereinthe consumer device comprises a game console.
 13. A method offacilitating restoration of software configurations of devices, saidmethod comprising: automatically tracking in a repository informationrelating to a software configuration of a device, the automaticallytracking being responsive to changes to the software configuration;determining that the software configuration of the device is to berestored; and responsive to the determining, automatically providing tothe device, based on information of the repository, one or more softwarecomponents usable in restoring the software configuration.
 14. Themethod of claim 13, further comprising updating an originalconfiguration of the device using the one or more software components torestore the software configuration.
 15. The method of claim 14, furthercomprising providing the original configuration of the device.
 16. Asystem of restoring software configurations of devices, said systemcomprising: means for automatically tracking an obtaining of one or moresoftware components of a device; and means for automatically restoring asoftware configuration of the device, said means for automaticallyrestoring comprising means for automatically providing to the device theone or more software components that are tracked for that device. 17.The system of claim 16, wherein the means for automatically restoring isresponsive to a software failure of the device.
 18. The system of claim16, wherein the one or more software components comprise at least one ofone or more applications and one or more software patches.
 19. Thesystem of claim 16, wherein the means for automatically restoringfurther comprises means for installing the one or more softwarecomponents on an original configuration of the device to restore thesoftware configuration to a recorded state of the device.
 20. The systemof claim 19, further comprising means for using recovery firmware of thedevice to provide the original configuration of the device.
 21. Thesystem of claim 19, wherein the means for automatically restoringfurther comprises means for verifying the software configuration. 22.The system of claim 16, wherein the means for automatically trackingcomprises means for storing information regarding the one or moresoftware components in a repository associated with the device, saidinformation being coupled to the device by an identifier of the device.23. The system of claim 16, wherein at least one software component ofthe one or more software components is provided electronically.
 24. Thesystem of claim 16, further comprising means for initially providing tothe device at least one software component of the one or more softwarecomponents to be tracked, wherein the means for initially providingcomprises means for determining a version of the at least one softwarecomponent to be provided.
 25. The system of claim 24, wherein the meansfor determining comprises means for using data in a repository todetermine the version, said data comprising at least one of informationrelating to the software configuration of the device and informationrelating to a hardware configuration of the device.
 26. A system offacilitating restoration of software configurations of devices, saidsystem comprising: means for automatically tracking in a repositoryinformation relating to a software configuration of a device, the meansfor automatically tracking being responsive to changes to the softwareconfiguration; means for determining that the software configuration ofthe device is to be restored; and means for automatically providing tothe device, based on information of the repository, one or more softwarecomponents usable in restoring the software configuration, the means forautomatically providing being responsive to the means for determining.27. The system of claim 26, further comprising means for updating anoriginal configuration of the device using the one or more softwarecomponents to restore the software configuration.
 28. The system ofclaim 27, further comprising means for providing the originalconfiguration of the device.
 29. A system of restoring softwareconfigurations of devices, said system comprising: a recovery unit toautomatically track an obtaining of one or more software components of adevice, and to automatically provide to the device the one or moresoftware components that are tracked for that device to restore asoftware configuration of the device.
 30. A system of facilitatingrestoration of software configurations of devices, said systemcomprising: a repository including automatically tracked informationrelating to a software configuration of a device; and a recovery unit,responsive to a determination that the software configuration of thedevice is to be restored, to automatically provide to the device, basedon information of the repository, one or more software components usablein restoring the software configuration.
 31. At least one programstorage device readable by a machine, tangibly embodying at least oneprogram of instructions executable by the machine to perform a method ofrestoring software configurations of devices, said method comprising:automatically tracking an obtaining of one or more software componentsof a device; and automatically restoring a software configuration of thedevice, said automatically restoring comprising automatically providingto the device the one or more software components that are tracked forthat device.
 32. The at least one program storage device of claim 31,wherein the automatically restoring is responsive to a software failureof the device.
 33. The at least one program storage device of claim 31,wherein the one or more software components comprise at least one of oneor more applications and one or more software patches.
 34. The at leastone program storage device of claim 31, wherein the automaticallyrestoring further comprises installing the one or more softwarecomponents on an original configuration of the device to restore thesoftware configuration to a recorded state of the device.
 35. The atleast one program storage device of claim 34, wherein said methodfurther comprises using recovery firmware of the device to provide theoriginal configuration of the device.
 36. The at least one programstorage device of claim 34, wherein the automatically restoring furthercomprises verifying the software configuration.
 37. The at least oneprogram storage device of claim 31, wherein the automatically trackingcomprises storing information regarding the one or more softwarecomponents in a repository associated with the device, said informationbeing coupled to the device by an identifier of the device.
 38. The atleast one program storage device of claim 31, wherein at least onesoftware component of the one or more software components is providedelectronically.
 39. The at least one program storage device of claim 31,wherein said method further comprises initially providing to the deviceat least one software component of the one or more software componentsto be tracked, wherein the initially providing comprises determining aversion of the at least one software component to be provided.
 40. Theat least one program storage device of claim 39, wherein the determiningcomprises using data in a repository to determine the version, said datacomprising at least one of information relating to the softwareconfiguration of the device and information relating to a hardwareconfiguration of the device.
 41. At least one program storage devicereadable by a machine, tangibly embodying at least one program ofinstructions executable by the machine to perform a method offacilitating restoration of software configurations of devices, saidmethod comprising: automatically tracking in a repository informationrelating to a software configuration of a device, the automaticallytracking being responsive to changes to the software configuration;determining that the software configuration of the device is to berestored; and responsive to the determining, automatically providing tothe device, based on information of the repository, one or more softwarecomponents usable in restoring the software configuration.
 42. The atleast one program storage device of claim 41, wherein said methodfurther comprises updating an original configuration of the device usingthe one or more software components to restore the softwareconfiguration.
 43. The at least one program storage device of claim 42,wherein said method further comprises providing the originalconfiguration of the device.